I. Technical Field
The present invention generally relates to the field of managing virtualized logical units. More particularly, the invention relates to systems and methods for implementing vendor specific storage array commands to manage virtualized logical units.
II. Background Information
Computer systems are constantly improving in terms of speed, reliability, and processing capability. As is known in the art, computer systems which process and store large amounts of data typically include one or more processors in communication with a shared data storage system in which the data is stored. The data storage system may include one or more storage devices, usually of a fairly robust nature and useful for storage spanning various temporal requirements, e.g., disk drives. The one or more processors perform their respective operations using the storage system. Mass storage systems (MSS) typically include an array of a plurality of disks with on-board intelligent and communications electronics and software for making the data on the disks available.
To leverage the value of MSS, they are typically networked in some fashion. Popular implementations of networks for MSS include network attached storage (NAS) and storage area networks (SAN). In NAS, MSS is typically accessed over known TCP/IP lines such as Ethernet using industry standard file sharing protocols such as NFS, HTTP, and Windows Networking.
SANs are frequently used in enterprise storage. A typical Fibre Channel SAN includes a number of Fibre Channel switches that are connected together to form a fabric or a network. Furthermore, SANs typically use a protocol called “SCSI” (Small Computer System Interface) to communicate between devices. The current version of the standard, SCSI-3, has been implemented by some current software and hardware products. However, some products still support prior versions of the standard.
In the SCSI standard, communication takes place between an “initiator” and a “target.” The initiator may be, for example, a host computer and the target may be, for example, a server storing data. The initiator sends a command to the target, such as, for example, a request for certain data. The target may be assigned at least one logical unit number (LUN) for the purpose of identifying the target. Further, in the SCSI standard, a “command” is the basic unit of communication. Commands are sent to a device in a “command descriptor block” (CDB). The CDB typically includes a one byte operation code followed by five or more bytes containing command-specific parameters. The last byte of the CDB is the “control block.” There are four basic categories of SCSI commands: N (non-data), W (writing data from initiator to target), R (reading data), and B (bidirectional). In all, there are about sixty different commands included in the SCSI standard.
SANs may use storage virtualization. Storage virtualization refers to a process of combining multiple independent storage arrays so that the devices appear as a single device that can be centrally managed. For example, EMC INVISTA by EMC Corporation of Hopkinton, Mass., is a product that provides a storage virtualization solution that runs on intelligent SAN switches. Examples of storage arrays include the SYMMETRIX Integrated Cache Disk Array System and the CLARIION Disk Array System, both available from EMC Corporation of Hopkinton, Mass.
One may view each storage array included in a SAN as having its own personality. For example, storage arrays that are included in a SAN may be provided by different vendors. As a result, some storage arrays may implement vendor specific commands and other storage arrays might not implement all aspects of the SCSI standard. Thus, software management tools may be unable to define commands that are understood by all storage arrays in a SAN. In view of the foregoing, there is a need for improved systems and methods for managing storage networks using vendor specific commands. For example, there is a need for systems and methods that implement vendor specific commands in a flexible manner so that commands may be implemented regardless of whether the commands are supported by a storage array.